package ace.module.upms.api;

import ace.cmp.core.model.R;
import ace.cmp.sdk.api.SdkApi;
import ace.module.upms.api.model.dto.UpmsApplicationDto;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;

/**
 * 权限应用 api.
 *
 * @author caspar
 */
public interface UpmsApplicationApi extends SdkApi<UpmsApplicationDto, Long> {

  /**
   * 查询权限应用.
   *
   * @param outType 外部应用类型
   * @param outId 外部应用id
   * @return 权限应用
   */
  R<UpmsApplicationDto> getByOutTypeAndOutId(@Valid @NotEmpty String outType, @Valid @NotEmpty String outId);

  /**
   * 查询权限应用,并且验证应用能否可用.
   *
   * @param outType 外部应用类型
   * @param outId 外部应用id
   * @return 权限应用
   */
  R<UpmsApplicationDto> getAndCheckByOutTypeAndOutId(@Valid @NotEmpty String outType, @Valid @NotEmpty String outId);

  /**
   * 获取运营管理平台权限应用.
   *
   * @return 运营管理平台权限应用
   */
  R<UpmsApplicationDto> getAdminApplication();

  /**
   * 获取运营管理平台权限应用,并检查不能为null.
   *
   * @return 运营管理平台权限应用
   */
  R<UpmsApplicationDto> getAndCheckNotNullAdminApplication();
}
